<?php
namespace Models;

class Password
{
	const PASSWORD_LENGTH = 8;
	
    // Blowfish-algoritm  
    private static $_algo = '$2a';  
	
    // Kostnad (2 upphöjt till talet)  
    private static $_cost = '$10';  
      
	/**
	 * Genererar en 22 karaktärer lång slumpad strämg
	 */
    private static function getUniqueSalt()
    {  
        return substr(sha1(mt_rand()), false, 22);  
    }  
    
    /**
	 * Genererar ett hashat lösenord
	 * @param $password string - lösenordssträng att hasha
	 * @return string - 29 tecken långt hashat lösenord
	 */
    public static function hashPassword($password)
    {  
        return crypt($password, self::$_algo . self::$_cost . '$' . self::getUniqueSalt());  
    }  
    
    /**
	 * Jämför ett hashat lösenord med ett angivet
	 * @param $hash string - lösenord sparat i DB
	 * @param $password string - angivet lösenord
	 */  
    public static function checkPassword($hash, $password)
    {
    	// Plockar ut salt ur den hashade strängen  
        $salt = substr($hash, 0, 29);  
		
        $inputHash = crypt($password, $salt);  
        
        return ($hash == $inputHash);  
    }
}

?>